// SyntaxAnalyzer.h: interface for the SyntaxAnalyzer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SYNTAXANALYZER_H__8CA93ABC_BCC2_44CC_8652_04C9ED0989A4__INCLUDED_)
#define AFX_SYNTAXANALYZER_H__8CA93ABC_BCC2_44CC_8652_04C9ED0989A4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "AccidenceAnalyzer.h"
#include "Afxtempl.h"
#include "ComplierNote.h"
#include "ErrorReporter.h"

class __declspec( dllexport ) SyntaxAnalyzer  
{
public:
	SyntaxAnalyzer(const CString& strExpression, PropertyStackInterface* pStack);
	virtual ~SyntaxAnalyzer();

public:
	BOOL Interpret();
	Variable Execute();
	void ReportError();

private:
	void ClearStatement();

private:
	ErrorReporter m_ErrorReporter;
	AccidenceAnalyzer m_AAnalyzer;
	PropertyStackInterface* m_pStack;
	CArray<ComplierNote*, ComplierNote*> m_theStatements;
};

#endif // !defined(AFX_SYNTAXANALYZER_H__8CA93ABC_BCC2_44CC_8652_04C9ED0989A4__INCLUDED_)
